package vista;
import java.awt.Dimension;
import java.awt.Toolkit;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.List;
import java.util.Set;

import javassist.expr.Cast;

import javax.swing.JButton;
import javax.swing.JLabel;
import javax.swing.JSeparator;
import javax.swing.JTable;
import javax.swing.SwingConstants;
import javax.swing.SwingUtilities;
import javax.swing.WindowConstants;
import javax.swing.border.LineBorder;
import javax.swing.table.DefaultTableModel;
import javax.swing.table.TableModel;

import org.hibernate.repackage.cglib.core.Converter;

import negocio.beans.central.MovimientoStock;
import negocio.beans.central.Stock;
import negocio.beans.oficinaventa.Rodamiento;
import controlador.CasaCentral;
import daohibernate.MovimientoStockDAO;
import daohibernate.RodamientoDAO;
import daohibernate.StockDAO;


public class Rodamientos extends javax.swing.JFrame {

	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;
	private JSeparator jSeparator2;
	private JSeparator jSeparator1;
	private JLabel lblTitulo;
	private JTable tblRodamientos;
	private JButton btnModificacion;
	private JButton btnAlta;
	private JButton btnBorrar;
	
	public static void main(String[] args) {
		SwingUtilities.invokeLater(new Runnable() {
			public void run() {
				Rodamientos inst = new Rodamientos();
				inst.setLocationRelativeTo(null);
				inst.setVisible(true);
			}
		});
	}
	
	public Rodamientos() {
		super();
		initGUI();
		CentrarJFrame();
		
		LlenarTablaRodamientos();
				
	}
	
	private void initGUI() {
		try {
			setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);
			getContentPane().setBackground(new java.awt.Color(202,203,251));
			getContentPane().setLayout(null);
			this.setResizable(false);
			this.setTitle("Rodamientos");
			{
				btnAlta = new JButton();
				getContentPane().add(btnAlta);
				btnAlta.setText("Alta");
				btnAlta.setBounds(50, 223, 93, 21);
				btnAlta.addActionListener(new ActionListener() {
					public void actionPerformed(ActionEvent evt) {
						RodamientosAlta pantalla = new RodamientosAlta();
						pantalla.setVisible(true);
						//pantalla.setCodigoEstandar(tblRodamientos.getValueAt(tblRodamientos.getSelectedRow(),0).toString());
						//pantalla.setCantidad(tblRodamientos.getValueAt(tblRodamientos.getSelectedRow(),1).toString());
						//pantalla.setTblRodamientos(tblRodamientos);
					}
				});
				
				btnBorrar = new JButton();
				getContentPane().add(btnBorrar);
				btnBorrar.setText("Borrar");
				btnBorrar.setBounds(150, 223, 93, 21);
				btnBorrar.addActionListener(new ActionListener() {
					public void actionPerformed(ActionEvent evt) {
						String codigo = tblRodamientos.getValueAt(tblRodamientos.getSelectedRow(),0).toString();
						
						Rodamiento rod = RodamientoDAO.getInstancia().buscarRodamientoPorCodigo(codigo);
						Stock sto = StockDAO.getInstancia().buscarStockPorCodigoRodamiento(rod.getId_rodamiento());
						List<MovimientoStock> movStks = MovimientoStockDAO.getInstancia().buscarMovStockPorCodigoStock(sto.getId_Stock());
						
						for(MovimientoStock ms : movStks)
						{
							CasaCentral.getInstancia().bajaMovRod(ms);
						}
						
						CasaCentral.getInstancia().BorrarStock(sto);
						
						CasaCentral.getInstancia().bajaRodamiento(rod);
						
						DefaultTableModel temp = (DefaultTableModel) tblRodamientos.getModel();						
												
						temp.removeRow(tblRodamientos.getSelectedRow());
					}
				});
			}
			{
				TableModel tblRodamientosModel = 
					new DefaultTableModel(
							new String[][] { { "Codigo", "Cantidad"}},
							new String[] { "clmCodigo", "clmCantidad"});
				tblRodamientos = new JTable();
				getContentPane().add(tblRodamientos);
				tblRodamientos.setModel(tblRodamientosModel);
				tblRodamientos.setBounds(21, 41, 262, 165);
			}
			{
				lblTitulo = new JLabel();
				getContentPane().add(lblTitulo);
				lblTitulo.setText("Rodamientos");
				lblTitulo.setBounds(89, 6, 118, 18);
				lblTitulo.setBackground(new java.awt.Color(255,255,255));
				lblTitulo.setOpaque(true);
				lblTitulo.setHorizontalAlignment(SwingConstants.CENTER);
				lblTitulo.setFont(new java.awt.Font("Book Antiqua",1,16));
				lblTitulo.setBorder(new LineBorder(new java.awt.Color(0,0,0), 1, false));
			}
			{
				jSeparator1 = new JSeparator();
				getContentPane().add(jSeparator1);
				jSeparator1.setBounds(207, 12, 76, 10);
			}
			{
				jSeparator2 = new JSeparator();
				getContentPane().add(jSeparator2);
				jSeparator2.setBounds(21, 14, 69, 10);
			}
			pack();
			this.setSize(309, 288);
		} catch (Exception e) {
			e.printStackTrace();
		}
	}

	private void LlenarTablaRodamientos(){
		Set<Stock> stock = CasaCentral.getInstancia().obtenerStock();
		
		DefaultTableModel temp = (DefaultTableModel) tblRodamientos.getModel();
		
		for(int i = 1; i<temp.getRowCount();i++){
			temp.removeRow(i);	
		}
		
		for(Stock s : stock){
			Object nuevo[]= {s.getRodamiento().getCodigoEstandar(),s.getCantidadInterna()};
			temp.addRow(nuevo);
		}
	}
	
	private void CentrarJFrame(){
		
	    Dimension dim = Toolkit.getDefaultToolkit().getScreenSize();
	    
	    
	    int w = this.getSize().width;
	    int h = this.getSize().height;
	    int x = (dim.width-w)/2;
	    int y = (dim.height-h)/2;
	    
	    
	    this.setLocation(x, y);
	}
}
